home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
TPUG - Toronto PET Users Group
/
TPUG Users Group CD
/
TPUG Users Group CD.iso
/
C64
/
R-Shows
/
(c)sds.d64
/
sprites tut-2.64
(
.txt
)
< prev
Wrap
Commodore BASIC
|
2007-02-04
|
8KB
|
219 lines
0 REM" P.J.PONZO*83*WATERLOO/ONTARIO
1 [143]"
1000 GOSUB60000:PRINTCHR$(142):PRINT"[147] SPRITES-2"
1001 PRINT"[176][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][174]"
1002 PRINT"[221] MORE ON SPRITES [146] [221]":MS$="PONZOTUTOR"
1003 PRINT"[173][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][192][189][144]":GOSUB63100:MS$=" WELCOME!"
1005 GOSUB63100:GOSUB10000
1010 V=53248:POKE2040,13:POKEV+1,150:POKEV,150:POKEV+39,1:POKEV+29,1:POKEV+23,1
1020 POKEV+39,6:POKEV+21,1:PRINT"THIS IS A BLUE SPRITE.":FORT=1TO900:NEXT
1030 PRINT"A 'SORT-OF' LUNAR LANDER.":FORT=1TO1000:NEXT
1040 PRINT"LET'S LOOK AT IT MORE CLOSELY."
1050 MS$="LET'S LOOK":GOSUB63100:GOSUB63000:POKEV+21,0
1060 PRINT"[147]WE'LL DISPLAY THE PIXELS THAT MAKE"
1070 PRINT"UP THIS SPRITE...":GOSUB63000
1075 POKEV,255:POKEV+1,180:POKEV+21,1
1080 PRINT"[147]":GOSUB10200
1085 FORI=1TO5
1086 PRINTDN$"NOW, IN BINARY ":FORT=1TO50:NEXT
1087 PRINTDN$" ":FORT=1TO50:NEXT
1088 NEXT:GOSUB10400
1090 FORI=1TO5
1091 PRINTDN$"...AND IN BIT-PAIRS ":FORT=1TO50:NEXT
1092 PRINTDN$" ":FORT=1TO50:NEXT
1093 NEXT
1100 GOSUB10500:GOSUB63000
1110 PRINTPS$"NOW WE'LL "
1120 PRINTPS$"CHOOSE 4 "
1130 PRINTPS$"COLOURS AND "
1140 PRINTPS$"SET EACH "
1150 PRINTPS$"PIXEL PAIR "
1160 PRINTPS$"TO A COLOUR "
1170 PRINTPS$"ACCORDING TO"
1180 PRINTPS$"00[146]=COLOUR #0"
1190 PRINTPS$"01[146]=COLOUR #1"
1200 PRINTPS$"10[146]=COLOUR #2"
1210 PRINTPS$"11[146]=COLOUR #3":GOSUB63000
1215 GOSUB10600:FORI=1TO5:PRINTDN$"BASE OF VIDEO CHIP":FORT=1TO50:NEXT
1216 PRINTDN$"BASE OF VIDEO CHIP":FORT=1TO50:NEXT:NEXT
1220 PRINTPS$"V=53248:VIDEO":V=53248
1225 GOSUB63000:PRINTDN$"[144]SET COLOUR #0=1(WHITE)"
1230 PRINTPS$"POKEV+33,1 ":POKEV+33,1
1240 GOSUB63000:PRINTDN$"V+33=53281(BACKGROUND)"
1245 GOSUB63000:PRINTDN$"SET COLOUR #1=0(BLACK)"
1250 PRINTPS$"POKEV+37,0 ":POKEV+37,0
1260 GOSUB63000:PRINTDN$"V+37=SPRITE MULTI-COLOUR REG'R #0"
1265 GOSUB63000:PRINTDN$"SET COLOUR #2=2(RED)"
1270 PRINTPS$"POKEV+39,2 ":GOSUB63000:POKEV+39,2
1280 GOSUB63000:PRINTDN$"V+39=COLOUR REGISTER FOR SPRITE #0"
1285 GOSUB63000:PRINTDN$"SET COLOUR #3=3(CYAN)"
1290 PRINTPS$"POKEV+38,3 ":POKEV+38,3
1300 GOSUB63000:PRINTDN$"V+38=SPRITE MULTI-COLOUR REG'R #1" :GOSUB63000
1305 PRINTDN$"PLEASE NOTE!!!":GOSUB63000
1310 PRINTDN$"POKEV+39,2[146] CHANGED SPRITE TO RED":GOSUB63000
1320 PRINTDN$"& POKEV+33,1[146] CHANGED BACKGROUND":GOSUB63000
1330 FORI=1TO5
1331 PRINTDN$"BUT WHERE'S THE BLACK AND CYAN??":FORT=1TO50:NEXT
1332 PRINTDN$" ":FORT=1TO50:NEXT
1333 NEXT
1340 MS$=" WATCH!!":PRINT"[147]":POKEV+21,0:GOSUB63100:PRINT"[147]":GOSUB10700
1350 GOSUB60000:MS$="HOW TO DO?":GOSUB63100
1360 PRINT"[147]THE 00[146] COLOUR WAS 'BACKGROUND'"
1370 PRINT"(AND SHARED BY ALL VISIBLE SPRITES)"
1380 PRINT"AND POKE V+33[146] CHANGES THIS COLOUR."
1390 PRINT"THE 10[146] COLOUR WAS THE 'SPRITE COLOUR'"
1400 PRINT"(AND CAN BE DIFFERENT FOR EACH SPRITE)"
1410 PRINT"AND POKE V+39+N[146] CHANGES THIS COLOUR"
1420 PRINT"(FOR SPRITE #N, WITH N=0 TO 7)."
1430 MS$="01[146] & 11[146]???":GOSUB63100:GOSUB63000
1440 PRINT"[147]THEN, IN REGISTERS V+37[146] & V+38[146]"
1450 PRINT"ARE THE SPRITE MULTI-COLOURS[146]!!"
1460 PRINT"POKE V+37[146] AND POKE V+38[146] WITH THE"
1470 PRINT"COLOURS YOU WANT FOR THE 01[146] AND 11"
1480 PRINT"BIT PAIRS!!":MS$="ALL SHARED":GOSUB63100:GOSUB63000
1490 PRINT"[147]OK..OUR BACKGROUND CHANGES AND SO DOES"
1500 PRINT"OUR 'SORT-OF' SPRITE."
1510 PRINT"NOW TO ENABLE[146] MULTI-COLOUR FOR"
1520 PRINT"SPRITE #N, WE: POKE V+28,2^N[146]!!":MS$="ENABLE #N":GOSUB63100:GOSUB63000
1530 PRINT"[147]STILL NO CHANGE IN OUR SPRITE!":GOSUB63000
1540 PRINT"[147]WE MUST PUT THE C64 VIDEO CHIP INTO:"
1550 PRINT"MULTI-COLOUR MODE":PRINT"POKE V+22,PEEK(V+22)OR16"
1560 PRINT"SETTING BIT 4[146]=M[146]ULTI C[146]OLOUR M[146]ODE BIT"
1570 PRINT"THEN THOSE SPRITES WHICH WERE"
1580 PRINT"MULTI-COLOUR ENABLED[146] (POKEV+28,2^N)"
1590 PRINT"BECOME 'MULTI-COLOURED'!!":MS$="BEAUTIFUL!":GOSUB63100:GOSUB63000
1600 PRINT"[147]NOW YOU[157][157][157][184][184][184][145] CHANGE THE COLOURS"
1610 PRINT"OF OUT LUNAR LANDER!"
1620 PRINT"JUST HIT 0[146] OR 1[146] OR 2[146] OR 3[146] TO"
1630 PRINT"CHANGE COLOUR #0,#1,#2 OR #3."
1640 PRINT"...AND HIT 'Q' TO QUIT!":MS$=" READY?":GOSUB63100:GOSUB63000
1645 PRINT"[147]":V=53248:POKEV+22,216:GOSUB10700
1650 DIM CM$(15):DD$="":K=1:D0$=DD$+BL$+DD$:PRINT"";
1651 CM$(1)="VIDEO CHIP BASE ADDRESS"
1652 CM$(2)="PUT 'SHAPE' INTO A BLOCK"
1653 CM$(3)="POINT CHIP TO BLOCK"
1654 CM$(4)="SET 00[146] COLOUR (BACKGROUND)"
1655 CM$(5)="SET 01[146] COLOUR (COLOUR REG'R #0)"
1656 CM$(6)="SET 10[146] COLOUR (SPRITE COLOUR)"
1657 CM$(7)="SET 11[146] COLOUR (COLOUR REG'R #1)"
1658 CM$(8)="GIVE SPRITE #N AN X-POSITION"
1659 CM$(9)="GIVE SPRITE #N A Y-POSITION"
1660 CM$(10)="EXPAND IN Y-DIRECTION"
1661 CM$(11)="EXPAND IN X-DIRECTION"
1662 CM$(12)="PUT CHIP[146] INTO MULTI-COLOUR MODE"
1663 CM$(13)="SPRITE[146] #N INTO MULTI-COLOUR MODE"
1700 GOSUB60000:PRINT"[147]REVIEW:":PRINT"[184][184][184][184][184][184]"
1710 PRINT"V=53248 ":GOSUB10900
1720 PRINT"FORI=0TO62:READX:POKE832+I,X:NEXT":GOSUB10900
1730 PRINT"POKE2040+N,13 ":GOSUB10900
1740 PRINT"POKEV+33,C0 ":GOSUB10900
1750 PRINT"POKEV+37,C1 ":GOSUB10900
1760 PRINT"POKEV+39+N,C2 ":GOSUB10900
1770 PRINT"POKEV+38,C3 ":GOSUB10900
1780 PRINT"POKEV+2*N,X ":GOSUB10900
1790 PRINT"POKEV+2*N+1,Y ":GOSUB10900
1800 PRINT"POKEV+23,1 ":GOSUB10900
1810 PRINT"POKEV+29,1 ":GOSUB10900
1820 PRINT"POKEV+22,PEEK(V+22)OR16 ":GOSUB10900
1830 PRINT"POKEV+28,2^N ":GOSUB10900
9999 MS$="AU REVOIR":PRINT"[147]":GOSUB63100:END
10000 REM LANDER SPRITE
10005 FORI=0TO62:READX:POKE832+I,X:NEXT:RETURN
10010 DATA0,119,64,1,189,208,7,191,116
10011 DATA30,170,100,30,170,100,30,170,100
10012 DATA21,21,84,21,21,84,30,170,100
10013 DATA30,170,100,27,187,116,27,187,116
10014 DATA27,187,116,27,163,116,27,163,116
10015 DATA5,85,80,7,227,80,23,35,84
10016 DATA17,97,68,84,85,21,84,0,21
10100 REM SPRITE BORDER
10105 PRINT" 111111111122222"
10110 PRINT" 123456789012345678901234"
10120 FORI=1TO21:I$=STR$(I):I$=RIGHT$(" "+I$,2):PRINT""I$:NEXT:RETURN
10200 REM DISPLAY PIXELS
10205 PRINT"":FORI=0TO62STEP3:X=PEEK(832+I)
10210 FORJ=7TO0STEP-1
10220 IFXANDP(J)THENPRINTS$(1);:GOTO10240
10230 PRINTS$(0);
10240 NEXT:X=PEEK(832+I+1)
10250 FORJ=7TO0STEP-1
10260 IFXANDP(J)THENPRINTS$(1);:GOTO10280
10270 PRINTS$(0);
10280 NEXT:X=PEEK(832+I+2)
10290 FORJ=7TO0STEP-1
10300 IFXANDP(J)THENPRINTS$(1);:GOTO10320
10310 PRINTS$(0);
10320 NEXT:PRINT:NEXT:GOSUB10100:RETURN
10400 REM SPRITE IN BINARY
10405 PRINT"";
10410 FORI=0TO20:FORJ=3TO26:IFPEEK(1104+40*I+J)=160THENPRINT"1";:GOTO10430
10420 PRINT"0";:
10430 NEXT:PRINT:PRINT"";:NEXT:RETURN
10500 REM SPRITE IN BIT PAIRS
10505 PRINT"";:K=0:A=1104:B=0:C=20:D=3:E=26:F=4:G=49:H=40:A$="1":B$="0"
10510 FORI=BTOC:FORJ=DTOE:IFPEEK(A+H*I+J)=GTHENPRINTR$(K)A$;:GOTO10530
10520 PRINTR$(K)B$;
10530 K=K+1:IFK=FTHENK=B
10540 NEXT:PRINT:K=B:PRINT"";:NEXT:RETURN
10600 REM CLEAR
10610 FORI=1TO20:PRINTPS$"[145]";:FORJ=1TOI:PRINT"";:NEXT
10620 PRINT" ":NEXT:RETURN
10700 REM MOVE SPRITE
10705 PRINT"[147][144]HIT 'Q' TO QUIT":POKE53281,1
10710 V=53248:POKEV+28,1:POKEV+21,1:POKEV+29,O:POKEV+23,0:F=0:G=255
10720 FORT=FTOG:X=T:Y=T:POKEV,X:POKEV+1,Y:GETA$:IFA$="Q"THEN10795
10725 GOSUB10800:NEXT
10730 POKEV+29,1:POKEV+23,0
10740 FORT=GTOFSTEP-1:X=T:Y=T:POKEV,X:POKEV+1,Y:GETA$:IFA$="Q"THEN10795
10745 GOSUB10800:NEXT
10750 POKEV+29,0:POKEV+23,1
10760 FORT=FTOG:X=T:Y=G-T:POKEV,X:POKEV+1,Y:GETA$:IFA$="Q"THEN10795
10765 GOSUB10800:NEXT
10770 POKEV+29,1:POKEV+23,1
10780 FORT=GTOFSTEP-1:X=T:Y=G-T:POKEV,X:POKEV+1,Y:GETA$:IFA$="Q"THEN10795
10790 GOSUB10800:NEXT:GOTO10710
10792 GOSUB10800:NEXT
10795 POKEV+21,0:RETURN
10800 IFA$=""THENRETURN
10810 A=VAL(A$):CC=CC+1:IFCC>15THENCC=0
10820 ON A+1 GOTO10830,10840,10850,10860
10825 RETURN
10830 POKEV+33,CC:RETURN
10840 POKEV+37,CC:RETURN
10850 POKEV+39,CC:RETURN
10860 POKEV+38,CC:RETURN
10900 REM COMMENT
10905 PRINTD0$CM$(K):GOSUB63000:PRINTLEFT$(DD$,K+3):K=K+1:RETURN
60000 REM INITIALIZE
60001 BT$="":FORI=1TO24:BT$=BT$+"":NEXT:PRINTCHR$(142)
60002 PT$="[176][192][192][192][192][192][192][192][192][192][192][174][157][157][157][157][157][157][157][157][157][157][157][157][221][221][157][157][157][157][157][157][157][157][157][157][157][157][173][178][192][192][192][192][192][192][192][192][178][189]"
60003 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][206][163][163][163][163][163][163][163][163][163][163][163][163][205][157][157][157][157][157][157][157][157][157][157][157][157][157][157][165]============[144][167]"
60004 PT$=PT$+"[157][157][157][157][157][157][157][157][157][157][157][157][157][157][208][207][163][163][163][163][163][163][163][163][163][163][208][207][145][145][145][145][157][157][157][157][157][157][157][157][157][157][157][157]"
60005 PT$=BT$+"[145][145][145][145][145][145]"+PT$
60007 ML$=""
60008 WD=40:CRT=1024
60009 POKE53281,15:POKE53280,12:PRINT"[144]"
60010 V=53248:FORI=0TO16:POKEV+I,0:NEXT
60011 POKEV+23,0:POKEV+29,0:FORI=0TO7:POKEV+39+I,0:NEXT:POKEV+22,200:POKEV+28,0
60020 S$(0)=" ":S$(1)=" [146]"
60030 DN$=""
60035 BL$=" ":DN$=DN$+BL$+DN$
60040 PS$=""
60045 R$(0)="[146]":R$(1)="[146]":R$(2)="":R$(3)=""
60100 FORJ=0TO7:P(J)=2^J:NEXT
60200 RETURN
62000 GOSUB63000
62001 PRINTSD$CL$:PRINTCL$:PRINTCL$
62003 RETURN
63000 PRINT"[144]HIT RETURN[146] TO CONTINUE";
63001 GETA$:IFA$<>""THEN63001
63002 GETA$:IFA$=""THEN63002
63003 RETURN
63100 FORT=1TO5:PRINTPT$MS$;
63101 PRINTPT$" ";
63102 PRINTPT$MS$;:NEXT
63103 PRINT"[144]":RETURN
63900 SD$="":CL$="[146] [146]"
63901 SR$=""
63902 RETURN